#include <Servo.h>
#include <SoftwareSerial.h> //库文件
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//舵机
Servo jxb_1;
//软串口
SoftwareSerial BT(4, 5); //设置蓝牙与板子的连接端口。 pin 4 接蓝牙的 TXD pin 5 接蓝牙的 RXD
//光敏
int gm=0;
int gmz=0;
//土壤
int tr=0;
int trz=0;
//水位
int sw=0;
int swz=0;
//dht11温湿度模块
int wsd=0;
int wsdz=0;
//测电压
int dy=0;
int dyz=0;
//OLED
Adafruit_SSD1306 OLED(128, 64, &Wire, -1);
int a=1;
void setup() {
  // put your setup code here, to run once:
  //补光灯初始化
  pinMode(6,OUTPUT);
  //水泵初始化
  pinMode(7, OUTPUT);//数字口3设置为输出
  pinMode(8, OUTPUT);//数字口8设置为输出
  //蜂鸣器初始化
  pinMode(9,OUTPUT);
  //舵机初始化
  jxb_1.attach(11,500,2500);
  //蓝牙初始化
  BT.begin(9600); //蓝牙通信速率，默认一般为 9600
 //oled初始化
  OLED.begin(SSD1306_SWITCHCAPVCC,0x3C);
  OLED.setTextSize(1);
  //OLED.setTextWrap(true);自动换行
  //drawBitmap(x,y,bitmap,w,h,c);图像显示
  OLED.setTextColor(1);
  OLED.setCursor(0,0);
}

void loop() {
  // put your main code here, to run repeatedly:
  gm=analogRead(15);
  sw=analogRead(14);swz=sw-300;
  tr=analogRead(19);trz=map(gm,0,1024,0,100);
  wsd=analogRead(16);
  dy=analogRead(20);dyz=map(gm,0,1024,0,12);
  if(trz<20)
  {
    analogWrite(3,120);
    analogWrite(9,0);
    delay(100);
  }
  else
  {
    analogWrite(3,0);
    analogWrite(9,0);
  }
  if(gm<=100)
  {
    analogWrite(6,120);
    jxb_1.write(90);
    delay(200);
  }
  else if(gm>=300)
  {
    analogWrite(6,0);
    jxb_1.write(180);
    delay(500);
  }
  if(swz<=10)
  {
    digitalWrite(4,HIGH);
    BT.print("没水了，请加水");
  }
  else 
  {
    digitalWrite(4,LOW);
  }
  BT.print("sw：");
  BT.print(swz);
  OLED.setCursor(0,0);
  OLED.print("sw：");
  OLED.print(swz);
  BT.print("gz");
  BT.print(gmz);
  OLED.setCursor(0,10);
  OLED.print("gz：");
  OLED.print(gmz);
  BT.print("tr");
  BT.print(trz);
  OLED.setCursor(0,20);
  OLED.print("tr：");
  OLED.print(trz);
  BT.print("kqwsd");
  BT.print(wsdz);
  OLED.setCursor(0,30);
  OLED.print("kqwsd：");
  OLED.print(wsd);
  OLED.setCursor(0,40);
  OLED.print("dy：");
  OLED.print(dyz);
  OLED.display();
  delay(10);
  OLED.clearDisplay();
  delay(100);
}
